﻿/**
* Подкласс Timer.
* @author Firsoff Maxim, icq:234859730, firsoff_maxim@mail.ru, tel:+79222345364
* @version 0.1/08.07.2008 15:47
*/

package ru.vega_int.firsoff.as3.utils 
{
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	import flash.utils.setTimeout;
	import flash.utils.clearTimeout;
	import flash.utils.getTimer;

	public class Timer2 extends Timer
	{
		//	PROPERTIES
		//	public
		//	private
		private var _timeout:int;			//	тайм аут
		private var _currentTickTime:int;	//	текущее время тика, в мс
		private var _freezeDelay:int;		//	время "заморозки"
		//	const
		//	----------------------------------------------------------------------------------
		
		//	CONSTRUCTOR
		public function Timer2(delay:Number, repeatCount:int = 0) 
		{
			super(delay, repeatCount);
			init();
		}
		
		//	METHODS
		//	private
		private function init():void
		{
			_currentTickTime = 0;
			addEventListener(TimerEvent.TIMER, handleTimerEvent, false, 0, true);
		};

		//	public
		public function pause() : void
		{
			_freezeDelay = delay - (getTimer() - _currentTickTime);
			stop();
		};
		
		public function resume() : void
		{
			_timeout = setTimeout(start, _freezeDelay);
		};
		
		override public function start():void 
		{
			super.start();
			clearTimeout(_timeout);
		};
		//	----------------------------------------------------------------------------------
		
		//	GETTERS/SETTERS
		
		//	----------------------------------------------------------------------------------
		
		//	HANDLERS
		private function handleTimerEvent(event:TimerEvent):void 
		{
			_currentTickTime = getTimer();
		};
		//	----------------------------------------------------------------------------------
	};
};
